using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("Asset")]
	public class Asset : MonoClass
	{
		public AssetFamily m_family => method_2<AssetFamily>("m_family");

		public bool m_persistent => method_2<bool>("m_persistent");

		public AssetReference m_assetRef => method_3<AssetReference>("m_assetRef");

		public Locale m_locale => method_2<Locale>("m_locale");

		public Asset(IntPtr address, string className)
			: base(address, className)
		{
		}

		public Asset(IntPtr address)
			: this(address, "Asset")
		{
		}

		public string GetName()
		{
			return method_13("GetName");
		}

		public string GetPath()
		{
			return method_13("GetPath");
		}

		public AssetFamily GetFamily()
		{
			return method_11<AssetFamily>("GetFamily", Array.Empty<object>());
		}

		public bool IsPersistent()
		{
			return method_11<bool>("IsPersistent", Array.Empty<object>());
		}

		public string GetDirectory()
		{
			return method_13("GetDirectory");
		}

		public List<string> GetExtensions()
		{
			return method_14<Class249>("GetExtensions", Array.Empty<object>())?.method_25();
		}

		public AssetReference GetAssetReference()
		{
			return method_14<AssetReference>("GetAssetReference", Array.Empty<object>());
		}

		public void SetAssetReference(AssetReference assetRef)
		{
			method_8("SetAssetReference", assetRef);
		}

		public Locale GetLocale()
		{
			return method_11<Locale>("GetLocale", Array.Empty<object>());
		}

		public void SetLocale(Locale locale)
		{
			method_8("SetLocale", locale);
		}

		public new string ToString()
		{
			return method_13("ToString");
		}
	}
}
